之前回答問題時
發現C#使用者可能不知道一些
關於字串開發上有用的小知識
所以有了這篇文章 :)
使用方式使用@
標明在字串前
舉例:
var str_total = @"
你好
IT邦幫忙
";
系統幫你編譯的時候會自動加上\r\n\t
這時候可以避免一些問題,
像是SQL相接字串少加空白,造成SQL Error
使用$
標明在字串前
var name = "暐翰";
var str_say = "你好,IT邦幫忙";
var str_total = $"{name} 說 : {str_say}";
系統幫你編譯的時候會自動加上string.format()
使用$@
標明在字串前
var name = "暐翰";
var str_say = "IT邦幫忙";
var str_total = $@"
{name} 說:
你好
{str_say}
";
注意要$
在前@
在後(不然會出現錯誤)
因為string.format底層還是使用stringbuilder來串接字串
所以遇到多執行緒共用同一個字串時,還是要特別處理喔
因為string.format底層還是使用stringbuilder來串接字串
所以遇到多執行緒共用同一個字串時,還是要特別處理喔
這句話不太懂,
能舉個實例嗎?
什麼時候會出問題?
我回答在下方留言
這句話不太懂,
能舉個實例嗎?
什麼時候會出問題?
舉例
現在做一個線上可多人同時修改的markdown筆記本
server端資料筆記的文本資料共用一個stringbuiler保存起來
初始筆記資料:
你好嗎 IT幫
這時候有多個使用者分別在同時修改筆記並送出到server
因為server是多執行續環境
可能A使用者修改
你好嗎 IT幫
不好
B使用者修改
你好嗎 IT幫
好
假如因為stringbuiler底層沒有做lock處理
所以是誰修改成功不知道。
正確做法應該要
A、B使用者送出請求時
要去lock筆記資料的stringbuiler
看哪個reqeust先到先修改
後到的修改請求,server就要不接受,並返回訊息給前端說
"此次修改失敗,因為有其他使用者先修改"
所以在Server做lock的動作可以防止多個使用者同時動作的問題囉?
對
lock物件,可以用SQL概念對一個表格同一筆資料做update動作,也會lock資料
來理解
可怕的是SQL有時候一lock就沒完沒了...
發現C#使用者可能不知道一些
關於字串開發上有用的小知識
還真的不知道可以用$ , 只知道用 @"....."
您去哪挖出來的?
在stackoverflow跟大神學的
字串模板是 C# 6.0 的新功能。
VS 2015後就有了,
我還蠻喜歡它的.